package sgeb;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Controlador alumnos Clase encargada de gestionar todas las acciones
 * referentes a los entrenadores: 1) Insercción, borrado, consulta y modificación de
 * alumnos 2) Notificaciones a alumnos 3) Gestión de los pagos de los alumnos 4)
 * Gestión de las actividades extras
 *
 * @author Pablo TOrres Alba
 */
public class ControlEntrenador implements ActionListener {

    private VistaAdmin vistaAdministrativo;

    /**
     * Constructor de la clase
     *
     * @param vista Vista con al que trabajará el controlador
     * @author Borja Molina y Pablo TOrres ALba
     */
    public ControlEntrenador(VistaAdmin vista) {
	this.vistaAdministrativo = vista;
    }

    /**
     * Inserta un nuevo entrenador en el sistema
     */
    public int altaEntrenador(String dni, String nombre, String apellidos, Date fechaNacimiento, String direccion, Date fechaIngreso, String localidad, String provincia, int cp, int telFijo, int telMovil, String correo) {
	Entrenador nuevoEntrenador;
	nuevoEntrenador = new Entrenador(dni,nombre,apellidos,fechaNacimiento,direccion,localidad,provincia,cp,fechaIngreso,telFijo,telMovil,correo);
	int id = nuevoEntrenador.guardarEnt();
	return id;
    }

    /**
     * Consulta los datos de un entrenador Ojo! la recuperación de la fehca de
     * nacimiento no está implementada
     *
     * @param dni Identificador del entrenador
     * @return datos
     * @return null si no lo encuentra
     */
    public String[] consultarEntrenador(String dni) {
	try {
	    String[] datosEnt = new String[22];
	    System.out.print(dni);
	    Entrenador entrenadorConsultado = new Entrenador(dni);
	    datosEnt[0] = entrenadorConsultado.getDni();
	    datosEnt[1] = entrenadorConsultado.getNombre();
	    datosEnt[2] = entrenadorConsultado.getApellidos();
	    
	    //Date fechaNac = entrenadorConsultado.getFechaNacimiento();
	    //datosAlu[3] = Integer.toString(fechaNac.getDay());
	    //datosAlu[4] = Integer.toString(fechaNac.getMonth());
	    //datosAlu[5] = Integer.toString(fechaNac.getYear());
	    
	    datosEnt[6] = entrenadorConsultado.getDireccion();
	    datosEnt[7] = entrenadorConsultado.getLocalidad();
	    datosEnt[8] = Integer.toString(entrenadorConsultado.getCp());
	    datosEnt[9] = entrenadorConsultado.getProvincia();
	    datosEnt[10] = Integer.toString(entrenadorConsultado.getTefFijo());
	    datosEnt[11] = Integer.toString(entrenadorConsultado.getTefMovil());
	    datosEnt[12] = entrenadorConsultado.getCorreo();
	    if(datosEnt[0].equals(null)){
		datosEnt=null;
	    }
	    return datosEnt;
	    
	} catch (Exception e) {
	    return null;
	}
    }

    /**
     * Da de baja un entrenador del sistema
     *
     * @param dni Identificador del entrenador
     */
    public boolean bajaEntrenador(String dni) {
	return new Entrenador().bajaEntrenador(dni);
    }

    /**
     * Modifica un entrenador
     */
    public boolean modificarEntrenador(String dni, String nombre, String apellidos, Date fechaNacimiento, String direccion, String localidad, String provincia, int cp, int telFijo, int telMovil, String correo) {
	return new Entrenador().modificarEntrenador(dni,nombre,apellidos,fechaNacimiento,direccion, localidad, provincia, cp, telFijo, telMovil, correo);
    }

    /**
     * Inicia los listener de los botones de la vista
     */
    public void iniciar() {
	this.vistaAdministrativo.setVisible(true);
	this.vistaAdministrativo.BotonGuardarEntrenador.setActionCommand("Guardar entrenador");
	this.vistaAdministrativo.BotonBuscarEntrenador.setActionCommand("Buscar entrenador");
	this.vistaAdministrativo.BotonBorrarEntrenador.setActionCommand("Borrar entrenador");

	this.vistaAdministrativo.BotonGuardarEntrenador.addActionListener(this);
	this.vistaAdministrativo.BotonBuscarEntrenador.addActionListener(this);
	this.vistaAdministrativo.BotonBorrarEntrenador.addActionListener(this);
    }

    /**
     * Da la funcionalidad a cada uno de los botones
     *
     * @param e Evento que dispara las distinta acciones
     * @author Borja Molina y Pabo Torres Alba
     */
    public void actionPerformed(ActionEvent e) {
	String comando = e.getActionCommand();
	if (comando.equals("Guardar entrenador")) {
	    //Si vamos agregar uno nuevo
	    if (this.vistaAdministrativo.ultimoBotonPulsado() == 8) {
		String[] datosEnt = this.vistaAdministrativo.getDatosEnt();
		//Date fechaNacimiento = new Date(Integer.parseInt(datosAlu[4]), Integer.parseInt(datosAlu[3]), Integer.parseInt(datosAlu[2]));
		//Date fechaActual = new Date();
		int id = this.altaEntrenador(datosEnt[0],datosEnt[1],datosEnt[2],null,datosEnt[6],null,datosEnt[7],datosEnt[9],Integer.parseInt(datosEnt[8]),Integer.parseInt(datosEnt[10]),Integer.parseInt(datosEnt[11]),datosEnt[12]);
		this.vistaAdministrativo.insertarPanel(this.vistaAdministrativo.PanelEntrenadorGuardado);
	    }
	    //Si el alumno ya está agregado y lo que queremos es modificarlo
	    // OJO!! esta parte no funciona, hay que arreglarla
	    if (this.vistaAdministrativo.ultimoBotonPulsado() == 7) {
		String[] datosEnt = this.vistaAdministrativo.getDatosEnt();
		this.modificarEntrenador(datosEnt[0],datosEnt[1],datosEnt[2], null,datosEnt[6],datosEnt[7],datosEnt[9],Integer.parseInt(datosEnt[8]),Integer.parseInt(datosEnt[10]),Integer.parseInt(datosEnt[11]),datosEnt[12]);
		this.vistaAdministrativo.insertarPanel(this.vistaAdministrativo.PanelEntrenadorGuardado);
	    }
	}

	if (comando.equals("Buscar entrenador")) {
	    String dni = this.vistaAdministrativo.CampoBuscarEntrenadorDni.getText();
	    String[] datosEnt = this.consultarEntrenador(dni);
	    if (datosEnt != null) {
		this.vistaAdministrativo.setDatosEnt(datosEnt);
	    } else {
		this.vistaAdministrativo.flag_entrenador_no_encontrado = true;
	    }
	}

	if (comando.equals("Borrar entrenador")) {
	    String dni = this.vistaAdministrativo.CampoDniEnt.getText();
	    if (!dni.equals("")) {
		    if(this.bajaEntrenador(dni)){
			this.vistaAdministrativo.insertarPanel(this.vistaAdministrativo.PanelEntrenadorBorrado);
		    }
		}
	    }
	}

}
